package com.dongzili.data.mapdb;//package com.kqns.dataservice.common.mapdb;
//
//import com.kqns.dataservice.custom.user.entity.ApiAccessLog;
//import org.mapdb.*;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Scope;
//
//import java.util.concurrent.TimeUnit;
//
//@Configuration
//public class MapDBConfig {
//
//    @Value("${mapdb.file-path:mapdb.db}")
//    private String dbFilePath;
//
//    @Bean(destroyMethod = "close")
//    public DB mapDB() {
////        return DBMaker.fileDB(dbFilePath)
////                .checksumHeaderBypass() // 绕过校验头问题（常见坑）
////                .closeOnJvmShutdown()
////                .fileChannelEnable() // 比mmap更稳定的方式
////                .closeOnJvmShutdown() // JVM关闭时自动关闭
////                .transactionEnable() // 启用事务
////                .make();
//        return DBMaker.fileDB(dbFilePath)
//                .transactionEnable()
//                .concurrencyScale(64) // 优化并发性能
//                .make();
//
//    }
//
//    @Bean
//    @Scope(value = "singleton") // 必须单例
//    public HTreeMap<String, ApiAccessLog> dataMap(DB db) {
//        return db.hashMap("dataMap")
//                .keySerializer(Serializer.STRING)
//                .valueSerializer(new JsonSerializer<>(ApiAccessLog.class))
//                .expireAfterCreate(10, TimeUnit.MINUTES) // 基于创建时间过期
//                .expireAfterUpdate(5, TimeUnit.MINUTES) // 基于最后更新时间过期
//                .expireAfterGet(1, TimeUnit.MINUTES) // 基于最后访问时间过期
//                .createOrOpen();
//    }
//
//    @Bean
//    public IndexTreeList<ApiAccessLog> dataList(DB db) {
//        return db.indexTreeList("dataList", new JsonSerializer<>(ApiAccessLog.class)).createOrOpen();
//    }
//
//}